package org.x.user.dto;

import lombok.Data;
import java.net.URL;
import jakarta.validation.constraints.NotBlank;
import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 数据源配置信息入参实体类
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
@Data
public class DsConfigDTO {

    /**
     * 数据源配置ID:数据源配置ID，必填
     */
    @NotBlank(groups = { DeleteGroup.class, UpdateGroup.class }, message = "数据源配置ID不能为空")
    @Schema(description = "数据源配置ID:数据源配置ID，必填")
    private String id;

    /**
     * 数据源名称:数据源名称，必填
     */
    @NotBlank(groups = { CreateGroup.class }, message = "数据源名称不能为空")
    @Schema(description = "数据源名称:数据源名称，必填")
    private String dsName;

    /**
     * 数据源类型:数据源类型，必填
     */
    @NotBlank(groups = { CreateGroup.class }, message = "数据源类型不能为空")
    @Schema(description = "数据源类型:数据源类型，必填")
    private String dsType;

    /**
     * 所属环境:所属环境
     */
    @Schema(description = "所属环境:所属环境")
    private String envType;

    /**
     * 驱动类:驱动类
     */
    @Schema(description = "驱动类:驱动类")
    private String driverClass;

    /**
     * 主库URL:主库URL
     */
    @Schema(description = "主库URL:主库URL")
    private String masterUrl;

    /**
     * 从库URL列表:从库URL列表
     */
    @Schema(description = "从库URL列表:从库URL列表")
    private String slaveUrls;

    /**
     * 用户名:用户名
     */
    @Schema(description = "用户名:用户名")
    private String username;

    /**
     * 加密后的密码:加密后的密码
     */
    @Schema(description = "加密后的密码:加密后的密码")
    private String password;

    /**
     * 负载权重(1-100):负载权重(1-100)
     */
    @Schema(description = "负载权重(1-100):负载权重(1-100)")
    private Integer weight;

    /**
     * 是否启用:是否启用
     */
    @Schema(description = "是否启用:是否启用")
    private Boolean isEnabled;

    /**
     * 连接池配置:连接池配置
     */
    @Schema(description = "连接池配置:连接池配置")
    private String poolConfig;

    /**
     * 元数据:元数据
     */
    @Schema(description = "元数据:元数据")
    private String metadata;
}
